Unity 生命周期函数
🎮
优先级
Awake() 当点击play按钮,所有组件载入时将被视为Awake,如果inspector内的该脚本没有启用,但挂载到该游戏物体上依然可以触发
👇
OnEnable() 载入后将被执行一次,事实上它相当于勾选启用该物体 该函数优先级大于Start
👇
Start() 世俗意义上脚本运行后第1个被执行的函数。 和 Awake() 放置顺序无关,它永远慢于Awake()
👇
FixedUpdate() 刚体应该放在这个里面每0.02秒执行一次,而非每一帧执行一次
👇
Update() 最经典的生命周期函数 每一帧运行一次 跟电脑性能有关
👇
LateUPdate() 每一帧运行一次 如果和Update()同时存在,必然是等Update()的第一帧运行后才会执行,是👆面那个函数的跟屁🐛 同样跟电脑性能有关,该函数用的不多
留意
Time.deltaTime() 本帧与上一帧的间隔时间
当游戏物体被禁用时 Awake() 和 Start() 都不会执行,反复禁用开启Awake() 和 Start() 也只会执行一次
OnDestroy() 当游戏对象被禁用(从一开始就被禁用到结束),Destroy 不会被监听
若刚开始被禁用然后启用又禁用,或开始没有禁用,运行之后禁用了,Destroy 还是会被监听
Reset() 只会在inspector面板生效,在挂载时和未播放时点击reset时会触发 在编辑器内生效
OnGUI() 是一个ui系统,严格来说,每当game窗口刷新时候都会执行这里面的代码
OnDisable() 当被取消勾选启用时,会触发 该函数优先级大于OnDestroy 先禁用再销毁
OnDestroy() 当在inspector移除该脚本时触发,同样hierarchy内删除物体时也会触发
建议&总结
Awake() 适合创建游戏对象
Start() 适合获取游戏对象组件
好处👉不会造成指针报错
Unity 生命周期函数